





import numpy as np





# 假设 X 是一个二维数据矩阵（每行是特征，每列是样本）
X = np.array([[2, 3, 3, 4, 5, 7],
              [2, 4, 5, 5, 6, 8]])

# 1. 计算均值和标准差
mean = np.mean(X, axis=1, keepdims=True)  # 按行计算均值
print(mean)
std = np.std(X, axis=1, ddof=1, keepdims=True)    # 按行计算标准差
# std = np.std(X, axis=1, keepdims=True)    # 按行计算标准差
print(std)

# 2. 进行标准化
X_n = (X - mean) / std

# 打印结果
print("标准化后的数据：\n", X_n)





R = 1/5 * X_n @ X_n.T
print(R)





eigenvalues, eigenvectors = np.linalg.eig(R)
max_index = np.argmax(eigenvalues)
w = eigenvectors[:, max_index]





print('特征向量的值为', w)
# 计算降维后的数据集
X_transformed_mine = w @ X_n
print('降维的结果为', X_transformed_mine)





import numpy as np
from sklearn.decomposition import PCA

# 2. 初始化 PCA，设置主成分数为 1
pca = PCA(n_components=1)

# 3. 拟合并转换数据
X_transformed_api = pca.fit_transform(X_n.T)

# 4. 打印结果
print("降维后的数据：\n", X_transformed_api)



